<?php
/**
 * @brief Klasa encyjna CommodityType
 * 
 * Obiekty tej klasy reprezentują rodzaje towarów jakie mogą być oferowane na aukcjach.
 * Wszystkie te typy tworzą razem słownik towarów. Słownik jest podzielony nakategorie
 * rowarów, więc każdy typ jest przypisany do jednej.
 * 
 */
class Application_Model_CommodityType
{
    protected $_CommodityType_id; /*!< Identyfikator typu towaru. */
    protected $_Category_id; /*!< Identyfikator kategorii towaru. */
    protected $_name; /*!< Nazwa typu towaru. */
    protected $_description; /*!< Opis typi towaru.*/
    
    /**
     * @brief Konstruktor 
     * 
     * Przyjmuje tablicę znaków i na jej podstawie uzupełnia pola,
     * przy pomocy setOptions.
     * @param array $options 
     */
    public function __construct(array $options = null) {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * @brief Metoda uzupełniająca pola na podstawie wejściowej tablicy.
     * 
     * @param array $options
     * @return Obiekt tej klasy.
     */
    public function setOptions(array $options) {

        $methods = get_class_methods($this);

        foreach ($options as $key => $value) {

            $method = 'set' . ucfirst($key);

            if (in_array($method, $methods)) {

                $this->$method($value);
            }
        }
        return $this;
    }
     /**
      * @brief Metoda zwracająca identyfikator typu towaru.
      *
      * @return int 
      */
    public function getCommodityType_id() {
        return $this->_CommodityType_id;
    }
    /**
     * @brief Metoda ustawiająca identyfikator typu towaru.
     *
     * @param int $_CommodityType_id 
     */
    public function setCommodityType_id($_CommodityType_id) {
        $this->_CommodityType_id = $_CommodityType_id;
    }
     /**
      * @brief Metoda zwracająca identyfikator kategorii towaru.
      *
      * @return int
      */
    public function getCategory_id() {
        return $this->_Category_id;
    }
    /**
     * @brief Metoda ustawiająca identyfikator kategorii towaru.
     *
     * @param int $_Category_id 
     */
    public function setCategory_id($_Category_id) {
        $this->_Category_id = $_Category_id;
    }
     /**
      * @brief Metoda zwracająca nazwę typu towaru.
      *
      * @return String 
      */
    public function getName() {
        return $this->_name;
    }
    /**
     * @brief Metoda ustawiająca nazwę typu towaru.
     *
     * @param String $_name 
     */
    public function setName($_name) {
        $this->_name = $_name;
    }
     /**
     * @brief Metoda zwracająca opis typu towaru.
      *
      * @return String 
      */
    public function getDescription() {
        return $this->_description;
    }
    /**
     * @brief Metoda ustawiająca opis typu towaru.
     *
     * @param String $_description 
     */
    public function setDescription($_description) {
        $this->_description = $_description;
    }
     /**
      * @brief Metoda zwracającanazwę kategorii.
      *
      * @return String
      */
    public function getCategoryName(){
        $mapper= new Application_Model_CategoryMapper();
        $category = $mapper->find($this->getCategory_id());
        if(isset ($category)){
            return $category->getName();
        }
        return 'Nie mogę uzyskać nazwy kategorii;';
    }


    
}

